home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / gnu / amiga / gcc233.lha / README.2.3.3 < prev   
Text File  |  1992-12-29  |  14KB  |  352 lines

  1. This is a new distribution including GNU CC version 2.3.3.
  2.  
  3. It's a brand new version, and I'm sorry to say that I had almost no time
  4. to test it deeply, lets just hope it's as stable as the previous versions
  5. were. Since I'm away for 5 weeks, I just wanted to get this out before its
  6. old again ;-) Most changes since 2.2.2 are bug fixes in the C++ part, and, 
  7. there is a first version of a runtime support library for Objective C.
  8.  
  9. The rest of the distribution is the same as for 2.2.2, therefore I include
  10. after this short introduction the README.2.2.2 that accompanied gcc222.lha.
  11.  
  12. Note: no new libg++, sorry, didn't have time to compile!
  13.  
  14. Inline-Headers: Since the A4000 is now out, and thus OS3.0 is official,
  15. I'm including inline headers for OS3.0. They're very new (newer 
  16. than 2.3.3;-)), and I don't trust them fully, take take and be cautious
  17. using them. Please tell me about bugs, as usual!
  18.  
  19.  
  20.  
  21.  
  22. Here we go with README.2.2.2:
  23. ----------------------------------------------------------------------------
  24.  
  25. Here it is, a new distribution of gcc, version 2.2.2. 
  26.  
  27. ****************************************************************************
  28. What about sources ?
  29. ****************************************************************************
  30.  
  31. This archive should contain everything necessary to get you going, it doesn't
  32. include the sources for ixemul.library (should be available RSN as a different
  33. distribution), and it doesn't include full sources to gcc. If you're 
  34. interested in the sources required to rebuild gcc, get the original GNU
  35. sources (gcc-2.2.2.tar.Z), which should be stored on the same ftp site you
  36. got this binary distribution from (if they're not, tell the manager of that ftp
  37. site, as this is a requirement of the GNU Copyright LICENSE). Then apply
  38. the gcc patch-files in src-patches/, and configure for `amigados'. 
  39. Same thing goes for libg++-2.2. If you want (ie. you don't have to) get
  40. libg++-2.2.tar.Z (again, from the same ftp site you got this distribution
  41. from) and apply the libg++ diff from the src-patches directory, then
  42. configure for amigados and give it a try.
  43.  
  44. Sources for other tools only included as binaries are available separately
  45. in self-contained archives (such as for example gnuinfo-920712.lha for
  46. InfoView).
  47.  
  48. |
  49. | For the large majority of users, rebuilding gcc is not necessary, you can
  50. | just use it as is.
  51. |
  52.  
  53.  
  54. ****************************************************************************
  55. What's where
  56. ****************************************************************************
  57.  
  58. This release uses a slightly different disk layout than previous versions.
  59. I tried to make things a bit more logical, and reduce some weirdness that
  60. could only be explained by history ;-) (For example, the obscure gcc20: is
  61. gone..)
  62.  
  63.  
  64. This is the basic directory structure, and what's stored where:
  65.  
  66. COPYING            GNU LICENSE, read!!
  67. InfoView        this is a viewer for .info-* files as you find them
  68. InfoView.info        in info/. Please read thru this README before trying
  69.             to use it, you need to setup some things for it to
  70.             work!
  71. README.2.2.2        this file
  72. blib/            base relative libraries
  73. compilers/        home of compilers called by gcc
  74. envarc/            global environment variables you should have set when
  75.             using this programming environment
  76. g++-include/        C++ headers (for libg++)
  77. geninline/        Perl scripts to generate inline headers and -lamy glue
  78. include/        non-amiga specific C/C++ headers
  79. info/            manuals for the compiler and libg++
  80. ixpipe/            a pipe handler needed by the library
  81. lib/            normal (ie. not base relative) libraries
  82. libauto/        experimental lib to open shared libs at startup
  83. libs/            ixemul.library and ixemul.trace
  84. os-include/        amiga specific C/C++ headers. Add Commodore headers!!
  85. rexx/            ARexx wrappers for gcc and g++
  86. src-patches        source patches
  87. unix/            a pseudo root for a unix hierarchy
  88.  
  89.  
  90. The unix/ directory probably needs some more focus, so lets look at it a
  91. bit closer:
  92.  
  93. unix/etc:        this is /etc, and contains a config file for `man'
  94. man.conf
  95.  
  96. unix/dev:        not currently used, here to avoid requesters
  97.             asking you to insert `volume dev:' ;-)
  98.  
  99. unix/usr/bin:        this is /usr/bin, and contains all binaries of 
  100. README.TRACE        this distribution that are meant to be directly
  101. apropos*        invoked by the user (contrary to the executables
  102. dump*            in compilers/, that are meant to be invoked by a
  103. dump.c            driver program like gcc or gccv).
  104. gcc*            apropos,man,whatis build the man-package,
  105. gccv*            gcc, gccv are the compiler drivers (see below)
  106. genclass*        genclass is a /bin/sh script used with libg++
  107. ixconfig*        dump is a really primitive ps-like dumper, very
  108. ixconfig.c        internal, you'll probably never use it.
  109. less*
  110. man*
  111. sh*
  112. trace*
  113. trace.c
  114. whatis*
  115.  
  116. unix/usr/share/man:    this is the root for tons of man pages, in fact
  117.             everything I found from BSD is here, probably some
  118.             stuff as well, that's not (yet?;-)) available in
  119.             ixemul.library.
  120.  
  121. unix/usr/share/misc:    this hosts /usr/share/misc stuff, currently only
  122.             a termcap file needed by less and InfoView.
  123.  
  124.  
  125. ****************************************************************************
  126. Installation
  127. ****************************************************************************
  128.  
  129. Having unpacked this distribution, you already did most of the installation.
  130. What's missing are some assigns, and environment variables. 
  131. In the following section, I'm calling the directory where you unpacked your
  132. distribution, {UNPACKED}. Thus {UNPACKED}README.2.2.2 would refer to this
  133. file you're reading at the moment. Please replace {UNPACKED} with the actual
  134. name of that directory, ie. don't write {UNPACKED}!
  135.  
  136. 1. Load your S:User-Startup file into an editor (use S:Startup-Sequence if
  137.    you're still using kick 1.3)
  138.  
  139. 2. Somewhere at the end (but before the call to EndCLI when under 1.3!!)
  140.    add the following lines:
  141.    
  142.      ASSIGN gcc: {UNPACKED}
  143.      ASSIGN usr: gcc:unix/usr
  144.      ASSIGN lib: gcc:lib    ; skip if this collides with other assign
  145.      ASSIGN bin: usr:bin
  146.      ASSIGN etc: gcc:unix/etc
  147.      ASSIGN dev: gcc:unix/dev
  148.      ASSIGN tmp: t:
  149.      
  150.      PATH usr:bin add
  151.  
  152.    if you have enough memory, you might also add some of the following lines:
  153.  
  154.      RESIDENT gcc:compilers/amiga/2.2.2/cpp
  155.      RESIDENT gcc:compilers/amiga/2.2.2/cc1
  156.      RESIDENT gcc:compilers/amiga/2.2.2/cc1plus
  157.      RESIDENT gcc:compilers/amiga/2.2.2/as
  158.      RESIDENT gcc:compilers/amiga/2.2.2/ld
  159.      RESIDENT usr:bin/gcc
  160.  
  161.    especially cc1plus is a good choice for *not* including...
  162.  
  163. 3. when under 1.3, add the following lines:
  164.  
  165.      SETENV TERM amiga
  166.      SETENV LESSCHARSET latin1
  167.  
  168.    under 2.0 just copy the contents of envarc/ into envarc:, thus in the
  169.    shell do:
  170.    
  171.      COPY envarc/#? envarc:
  172.      
  173.    and if you want the settings to be done in the current session as well,
  174.    copy them to env: as well:
  175.    
  176.      COPY envarc/#? env:
  177.  
  178. XX NOTE: if you're using the communication program `Term' by Olaf "Olsen"
  179. XX       Barthel, make sure you're using the term: assign to tell Term where
  180. XX       to find its configuration files, *not* the TERM or TERMPATH 
  181. XX       environment variables (Term uses *both* of them, and if you have
  182. XX       for example TERMPATH set to the `Term' config directory, neither 
  183. XX       Less nor InfoView will work. They complain about your terminal being
  184. XX       too dumb!). You've been warned...
  185.  
  186. 4. make sure the system finds ixemul.library (which is distributed in the
  187.    libs/ directory).
  188.    Under 2.0, you might add the following line to S:User-Startup:
  189.    
  190.      ASSIGN libs: gcc:libs ADD
  191.      
  192.    or for 1.3 (and 2.0) you may just as well 
  193.    
  194.      COPY libs/ixemul.library LIBS:
  195.    
  196.    in the shell. In both cases, make sure the system actually finds the
  197.    library by issuing a 
  198.    
  199.      VERSION ixemul.library
  200.      
  201.    command in the shell. The output should show at least version 39.44 !!
  202.  
  203. 5. Copy the ixpipe-handler into your L: directory (or under 2.0, add 
  204.    ixpipe/ to your L: multiassign)
  205.    
  206.      COPY ixpipe/ixpipe-handler L:
  207.    
  208.    Then, depending on your OS version, do the following:
  209.    1.3: append the ixpipe/Mountlist entry to your DEVS:Mountlist, and add
  210.  
  211.       MOUNT IXPIPE:
  212.       
  213.     to your S:Startup-Sequence.
  214.  
  215.    2.0: append the ixpipe/Mountlist entry to your DEVS:Mountlist, and add
  216.    
  217.           MOUNT IXPIPE:
  218.           
  219.         to your S:User-Startup.
  220.    
  221.    2.1: add those entries to your DOS drivers:
  222.    
  223.          COPY ixpipe/IXPIPE(%|.info) DEVS:DOSDrivers
  224.  
  225.     NOTE: 2.1 is not yet officially released by Commodore!
  226.  
  227. 6. *VERY IMPORTANT* Make sure your STACK setting is at least 250000, or
  228.    the compilers *will* crash on larger source files!!
  229.  
  230. 7. the os-include/ directory is meant to contain the Amiga specific headers
  231.    distributed by Commodore. It already contains 2.0 inline headers for use
  232.    with gcc (instead of pragmas used by other compilers). You'll have to
  233.    add the other headers yourself, since I can't include them, they're
  234.    copyrighted (blech). In os-include/devices/ you find a small patch you
  235.    might apply to the system timer.h file, to make that compatible with the
  236.    rest of the library.
  237.  
  238.  
  239. ****************************************************************************
  240. Getting started
  241. ****************************************************************************
  242.  
  243. After installation (make sure your changes have been integrated into the
  244. system. Best thing to do is to reboot your machine) you're ready to read
  245. thru the provided documentation. 
  246.  
  247. On Workbench, double-click the InfoView icon, or just start InfoView from
  248. the Shell/CLI. You're then presented a hierarchical document browser, if
  249. you don't know it already, best thing to do is to go thru the short tutorial.
  250. If you'd like to read the tuturial, just enter `h' (ie. the h key, no quotes).
  251.  
  252. There's a second set of information available in this programming 
  253. environment, and that's man pages. There's no Workbench compatible program
  254. to access them, so you'll have to switch to a shell. 
  255.  
  256. The first man page you probably want to read, is a manual for man itself. For
  257. this, enter 
  258.  
  259.   man man
  260.  
  261. in your shell. To get a quick summary of command line options for gcc, do
  262.  
  263.   man gcc
  264.  
  265. etc, you get the point. The large bulk of provided man pages is for the 
  266. functions available in ixemul.library. If you want more information on how
  267. to call fopen() for example, you'd get it with
  268.  
  269.   man fopen
  270.  
  271.  
  272. ****************************************************************************
  273. ARexx
  274. ****************************************************************************
  275.  
  276. The provided ARexx scripts have been contributed by Loren J. Rittle.
  277. If you like ARexx, they're an alternate way of calling gcc. They 
  278. automatically make sure you're using a large enough stack setting, and 
  279. enable you to compile C++ programs with less obscure options. This 
  280. approach is furthermore useful if you're not able to use the g++ /bin/sh
  281. script.
  282.  
  283.  
  284. ****************************************************************************
  285. /bin/sh scripts
  286. ****************************************************************************
  287.  
  288. Currently, genclass and g++ are provided as the original /bin/sh scripts.
  289. Due to a bug in ixemul.library (affecting vfork()) they currently only
  290. work with kick 2.0 or better. If you feel adventurous and like to fix the
  291. 1.3/arp vfork(), tell me;-)
  292.  
  293.  
  294. ****************************************************************************
  295. gcc versus gccv
  296. ****************************************************************************
  297.  
  298. gccv stands for a gcc using vfork() to spawn a new process, and then calling
  299. the new execve() function in ixemul.library to call its subcompilers. Gcc
  300. continues to using the more system friendly RunCommand() function in
  301. dos.library to start subcompilers. Gccv has the advantage of being able to
  302. work with interprocess pipes, thus (provided you have the memory ;-)), you're
  303. able to do
  304.  
  305.     gccv -pipe your_program.c
  306.  
  307. causing the preprocessor (cpp), the C-compiler (cc1) and the assembler (as)
  308. to run at the same time, passing intermediate files thru internal pipes 
  309. instead of using temporary files.
  310.  
  311. As long as you don't want that feature (ok, playing with certain make tools
  312. also requires gccv) you're safe using gcc.
  313.  
  314.  
  315. ****************************************************************************
  316. Running gcc and ixemul.library with 1.3
  317. ****************************************************************************
  318.  
  319. Gcc should still work under 1.3, although I didn't test lately. Things that
  320. won't work currently are programs using vfork(), thus you won't currently be
  321. able to use gccv, nor any shell scripts using /bin/sh.
  322.  
  323. Due to popular demand, I revamped the startup code of ixemul.library to not
  324. fail if mathieeesingbas.library is not available. If that happens, ixemul
  325. functions that would require functions from mathieeesingbas.library are
  326. instead rerouted to a function that just displays a requester telling you 
  327. that you'd need mathieeesingbas.library to use that function, and then
  328. aborts the program. Mathieeesingbas.library implements single precision IEEE
  329. floating point arithmetics, used to implement the `float' data type in
  330. gcc. It comes in the ROMs of 2.x equipped machines, and is available as
  331. a disk-loadable library for 1.3 from Commodore.
  332.  
  333.  
  334.  
  335. ****************************************************************************
  336. And as always, have fun !
  337. ****************************************************************************
  338.  
  339. This release has been delayed due to other projects I had to really finish
  340. in time, mostly some final stuff for my studies ;-) I'm sorry for this! 
  341. However, chances are high that future gcc versions will include the major
  342. amigados changes in the official GNU sources, so you should get immediate
  343. amigados support, as soon as GNU releases a new copy of gcc. I'm currently
  344. negotiating with RMS about the details.
  345.  
  346.  
  347. Markus M. Wild
  348.  
  349. You can reach me:
  350. <wild@nessie.cs.id.ethz.ch> or
  351. <wild@amiga.physik.unizh.ch>
  352.